Expand description
A simple crate that implements the Neuroevolution Augmenting Topologies algorithm using genetic-rs
§Feature Roadmap:
- base (single-core) crate
- rayon
- serde
- crossover
You can get started by looking at genetic-rs docs and checking the examples for this crate.
Re-exports§
Modules§
- builtin
- Built-in nextgen functions and traits to go with them.
- prelude
- Used to quickly import everything this crate has to offer.
Simply add
use genetic_rs::prelude::*
to begin using this crate. - runnable
- A module containing the main
NeuralNetwork
struct. This has state/cache and will run the predictions. Make sure to runNeuralNetwork::flush_state
between uses ofNeuralNetwork::predict
. - topology
- A module containing the
NeuralNetworkTopology
struct. This is what you want to use in the DNA of your agent, as it is the thing that goes through nextgens and suppors mutation.
Macros§
- activation_
fn - Creates an
ActivationFn
object from a function
Structs§
- Genetic
Sim - The simulation controller.
Traits§
- Division
Reproduction - Used in dividually-reproducing
next_gen
s - Fitness
Fn - Represents a fitness function. Inputs a reference to the genome and outputs an f32.
- Generate
Random - Helper trait used in the generation of random starting populations
- Generate
Random Collection - Blanket trait used on collections that contain objects implementing
GenerateRandom
- Nextgen
Fn - Represents a nextgen function. Inputs genomes and rewards and produces the next generation
- Prunable
- Used in pruning next_gens
- Randomly
Mutable - Used in all of the builtin
next_gen
s to randomly mutate genomes a given amount
Functions§
- division_
pruning_ nextgen - When making a new generation, it despawns half of the genomes and then spawns children from the remaining to reproduce.
WIP: const generic for mutation rate, will allow for
DivisionReproduction::divide
to accept a custom mutation rate. Delayed due to current Rust limitations - scrambling_
nextgen - When making a new generation, it mutates each genome a certain amount depending on their reward. This nextgen is very situational and should not be your first choice.